#include <iostream>
#include <cstring>
using namespace std;

/*
	子类公有继承父类：子类究竟可以使用父类的哪些成员
	站在两个角度看问题
	    角度1：子类外部，子类定义花括号之外
		角度2：子类内部，子类定义花括号之内(成员函数代码写在类的外面也算)
	父类的保护成员是专门留给子类的
    父类的私有成员是专门留给自己的
*/
class Animal
{
public:
	void eat()
	{
		cout<<"动物吃"<<endl;
	}
	int age;
private:
	void sleep()
	{
		cout<<"动物睡觉"<<endl;
	}
	float weight;
protected:
	void run()
	{
		cout<<"动物跑步"<<endl;
	}
	int color;
};
class Cat:public Animal
{
public:
	//子类的内部
	void fun()
	{
		//子类内部：父类的公有成员(可使用)
		eat();
		age=5;
		
		//子类内部：父类的私有成员(不可使用)
		//sleep();
		//weight=12.5;
		
		//子类内部：父类的保护成员(可使用)
		run();
		color=0xffffff;
	}

};

int main(int argc,char **argv)
{
	Cat c1;
	
	//子类外部：父类的公有成员(可使用)
	//c1.eat();
	//c1.age=5;
	
	//子类外部：父类的私有成员(不可使用)
	//c1.sleep();
	//c1.weight=12.5;
	
	//子类外部：父类的保护成员(不可使用)
	//c1.run();
	//c1.color=0xffffff;
	
	c1.fun();
	return 0;	
}